package Vista;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

import VO.RodamientoVO;

import conexion.ProxyIR;



/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class BajaRodamientoGUI extends javax.swing.JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 4205243307851209728L;
	private JLabel codigoLbl;
	private JTextField codigoTxt;
	private JButton salirBtn;
	private JButton eliminarBtn;
	private JTable rodamientoTbl;
	private JButton buscarBtn;
	static private BajaRodamientoGUI instance;
	private ProxyIR server;
	private JLabel mensaje;
	DefaultTableModel rodamientosTblModel;
	private JScrollPane itemsScroll;
	
	/**
	* Auto-generated main method to display this JFrame
	*/
	static public BajaRodamientoGUI getInstance() {
		if (instance == null) {			
			instance = new BajaRodamientoGUI();
		}
		
		return instance;
	}
	
	public BajaRodamientoGUI() {
		super();
		server = ProxyIR.getInstance();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			this.setTitle("Baja Rodamiento");
			{
				codigoLbl = new JLabel();
				getContentPane().add(codigoLbl);
				codigoLbl.setText("Codigo");
				codigoLbl.setBounds(38, 49, 50, 28);
			}
			{
				codigoTxt = new JTextField();
				getContentPane().add(codigoTxt);
				codigoTxt.setBounds(88, 50, 112, 28);
			}
			{
				eliminarBtn = new JButton();
				getContentPane().add(eliminarBtn);
				eliminarBtn.setText("Eliminar");
				eliminarBtn.setBounds(88, 229, 112, 28);
				eliminarBtn.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						
						String codigo = codigoTxt.getText();
						RodamientoVO rod = new RodamientoVO(codigo); 
						try {
							server.eliminarRodamiento(rod);
							mensaje.setText("rodamiento borrado satisfactoriamente!");
						} catch (RemoteException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
							mensaje.setText("Error al borrar rodamiento");
						}
						codigoTxt.setText("");
						rodamientosTblModel = new DefaultTableModel(getColumnNames(), 0);		
						//itemsScroll.setViewportView(getRodamientoTbl());
						rodamientoTbl.setModel(rodamientosTblModel);
				
					}
				});
			}
			{
				salirBtn = new JButton();
				getContentPane().add(salirBtn);
				getContentPane().add(getBuscarBtn());			
				getContentPane().add(getItemsScroll());
				getContentPane().add(getMensaje());
				salirBtn.setText("Salir");
				salirBtn.setBounds(224, 229, 112, 28);
				salirBtn.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						
						BajaRodamientoGUI.getInstance().setVisible(false);
						
					}
				});
			}
			pack();
			this.setSize(441, 300);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private JButton getBuscarBtn() {
		if(buscarBtn == null) {
			buscarBtn = new JButton();
			buscarBtn.setText("Buscar");
			buscarBtn.setBounds(224, 50, 112, 28);
			buscarBtn.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					
					String codigo = codigoTxt.getText();
					try {
						
						popularLista(server.buscarRodamiento(new RodamientoVO(codigo)));// buscarRodamientoXCodigoYMarca(codigo, marca));
					} catch (RemoteException e) {
						mensaje.setText("error al buscar el rodamiento!");
						e.printStackTrace();
					}					
				}

				private void popularLista(
						RodamientoVO roda) {
					if(roda != null && roda.getCodigo() != null && roda.getModelo() != null){
						String[] elem = new String[3]; 
						elem[0] = roda.getCodigo();
						elem[1] = roda.getModelo();
						elem[2] = roda.getDescripcion();
						getTableModel().addRow(elem);	
					}	
					if(roda == null){
						mensaje.setText("no existe rodamiento para el codigo y marca ingresado!");
					}
				}			
			});
		}
		return buscarBtn;
	}
	
	private JScrollPane getItemsScroll() {
		if(itemsScroll == null) {
			itemsScroll = new JScrollPane();
			itemsScroll.setBounds(20, 101, 384, 82);
			itemsScroll.setViewportView(getRodamientoTbl());
		}
		return itemsScroll;
	}
	
	public DefaultTableModel getTableModel(){
		return rodamientosTblModel;
	}
	
	public Vector<String> getColumnNames(){		
		Vector<String> columnNames = new Vector<String>();		
		columnNames.add("Codigo");
		columnNames.add("Marca");
		columnNames.add("Descripcion");		
		return columnNames;		
	}
	
	private JTable getRodamientoTbl() {
		if(rodamientoTbl == null) {
			rodamientosTblModel = new DefaultTableModel(getColumnNames(), 0);			
			rodamientoTbl = new JTable();
			itemsScroll.setViewportView(rodamientoTbl);
			rodamientoTbl.setModel(rodamientosTblModel);
			rodamientoTbl.setBounds(38, 103, 358, 50);
		}
		return rodamientoTbl;
	}

	private JLabel getMensaje() {
		if(mensaje == null) {
			mensaje = new JLabel();
			mensaje.setBounds(38, 196, 358, 21);
		}
		return mensaje;
	}

}
